package com.sss.hloster03;

import java.util.Scanner;

public class TestWhile04 {

	public static void main(String[] args) {
		test06();

	}

	/**
	 * 输出2-100之内的所有素数---用while
	 */
	private static void test06() {
		int h = 2;
		while (h <= 100) {
			// 判断 h是不是一个素数
			// 采用反证法：假设这个数就是素数
			boolean isPrime = true;
			// 循环：从2-n-1依次去整除n
			int j = 2;
			while (j < h) {
				if (h % j == 0) {
					isPrime = false;
					// 找到一个证据就可以结束，不用全部找出
					break;
				}
				j++;
			} // 根据假设变量的结果进行判定输出
			if (isPrime == true) {
				System.out.println(h + "  是素数");
			} else {
				System.out.println(h + "不是素数");
			}

			h++;
		}
	}

	/**
	 * 输出2-100之内的所有素数
	 */
	private static void test05() {
		// 循环1-100
		for (int h = 2; h <= 100; h++) {
			// 判断h是不是一个素数
			int n = h;
			// 判断n是不是一个素数
			// 采用反证法：假设这个数就是素数
			boolean isPrime = true;
			// 算法
			// 循环：从2-n-1依次去整除n
			for (int i = 2; i < n; i++) {
				// 整除n
				if (n % i == 0) {
					// 找到一个可以整除n的数，则可以证明n不是素数
					// 修改假设变量
					isPrime = false;
					// 找到一个证据就可以结束，不用全部找出
					break;
				}
			}
			// 根据假设变量的结果进行判定输出
			if (isPrime == true) {
				System.out.println(n + "  是素数");
			} else {
				System.out.println(n + "不是素数");
			}
		}
	}

	/**
	 * 求：判断一个数是不是素数 算法分析： 素数：又叫质数，只能被1或其自身整除； 算法： 从2到n-1依次去整除n，如果都不能整除，则该数n是素数；
	 * 如果找到一个可以整除n的数，则可以确定n不是素数；
	 * 
	 */

	private static void test04() {
		// 使用scanner从控制台输入一个数
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入用于判定素数的数");
		// 定义一个变量n用于接收输入的数
		int n = sc.nextInt();
		// 判断输入的数n是不是一个素数
		// 采用反证法：假设这个数就是素数
		boolean isPrime = true;
		// 算法
		// 循环：从2-n-1依次去整除n
		for (int i = 2; i < n; i++) {
			// 整除n
			if (n % i == 0) {
				// 找到一个可以整除n的数，则可以证明n不是素数
				// 修改假设变量
				isPrime = false;
				// 找到一个证据就可以结束，不用全部找出
				break;
			}
		}
		// 根据假设变量的结果进行判定输出
		if (isPrime == true) {
			System.out.println(n + "是素数");
		} else {
			System.out.println(n + "不是素数");
		}
	}

	/**
	 * 嵌套循环：打印九九乘法表
	 * 
	 */
	private static void test01() {
		// 打印行:9行
		// 外层循环控制的是行数
		for (int i = 1; i <= 9; i++) {
			// 打印列：当前行包含多少列 9列
			// 内层循环控制的是列数
			for (int j = 1; j <= i; j++) {
				// 输出打印的内容 1*1=1 2*3=6
				System.out.print(j + "*" + i + "=" + (i * j) + "  ");
			}
			// 一行结束之后，输出换行符
			System.out.println();
		}
	}

	private static void test02() {
		int i = 0;
		while (++i <= 9) {
			int j = 0;
			while (++j <= i) {
				System.out.print(j + "*" + i + "=" + (i * j) + "  ");
			}
			System.out.println();
		}
	}

	private static void test03() {
		int i = 1;
		do {

			int j = 1;
			do {

				System.out.print(j + "*" + i + "=" + (i * j) + "  ");

			}

			while (++j <= i);

			System.out.println();
		} while (++i <= 9);

	}

}
